// // npm install express@next mongoose cors
// const express = require('express')
// const app = express()
// const mongoose = require('mongoose')
// app.use(require('cors')())
// app.use(express.json())
// // 登录验证
// app.post('/api/login', async(req, res)=> {
//     const {username, password} = req.body
//     const login = await Login.findOne({username, password})
//     if (login !== null){
//         // 找到数据
//         // const jwt  = require('jsonwebtokens');
//         // let payload = {name:'lizibin',admin:true};
//         // let secret = 'I_LOVE_JING';
//         // let token = jwt.sign(payload,secret);
//         // console.log(token)
//         res.send(0)
//     } else {
//         // 没有找到数据
//         res.send(1)
//     }
// })
// // 录入学生
// app.post('/api/students', async(req,res)=> {
//     const student = await Student.create(req.body)
//     res.send(student)
// })
// // 删除学生
// app.delete('/api/students/:id', async(req,res)=> {
//     await Student.findByIdAndDelete(req.params.id)
//     res.send({
//         status: true
//     })
// })
// // 修改学生信息
// app.get('/api/updata/:id', async(req,res)=> {
//     const student = await Student.findById(req.params.id)
//     res.send(student)
// })
// // 进行更新学生信息
// app.put('/api/confirmUpdata/:id', async(req,res)=> {
//     const student = await Student.findByIdAndUpdate(req.params.id, req.body)
//     res.send(student)
// })
// // 根据学号精确查询
// app.get('/api/findBySnumber/:xuehao', async(req,res)=> {
//     const student = await Student.find({'snumber': req.params.xuehao})
//     res.send(student)
// })
// // 根据姓名模糊查询
// app.get('/api/findByName', async(req,res)=> {
//     result = {
//         data: [],
//         total: ''
//     }
//     var confident = new RegExp(req.query.names)
//     // 总记录数
//     var query = Student.find({$or:[{'name':confident}]})
//     query.count({},function(err, count) {
//         if (err) {
//             res.json(err)
//         } else {
//             result.total = count
//         }
//     })
//     // 第几页和每页大小
//     pageSize = parseInt(req.query.pageSize)
//     currentPage = parseInt(req.query.currentPage)
//     Student.find({}, (err, data)=> {
//         result.data = data
//         res.send(result)
//     }).where({$or:[{'name':confident}]}).skip((currentPage-1)*pageSize).limit(pageSize)
// })
// // 学生分页列表
// app.all('/api/studentlist', async(req,res)=> {
//     result = {
//         data: [],
//         total: ''
//     }
//     var confident = new RegExp(req.query.names)
//     // 总记录数
//     var query = Student.find()
//     query.count({},function(err, count) {
//         if (err) {
//             res.json(err)
//         } else {
//             result.total = count
//         }
//     })
//     // 第几页和每页大小
//     pageSize = parseInt(req.query.pageSize)
//     currentPage = parseInt(req.query.currentPage)
//     Student.find({}, (err, data)=> {
//         result.data = data
//         res.send(result)
//     }).skip((currentPage-1)*pageSize).limit(pageSize)
// })

// mongoose.connect('mongodb://localhost:27017/studentdata', { useNewUrlParser: true, useUnifiedTopology: true})
//     .then(()=> console.log('数据库连接成功'))
//     .catch(err => console.log(err, '数据库连接失败'))

// // 创建登录规则
// const loginSchema = new mongoose.Schema({
//     username: String,
//     password: String
// })
// // 使用登录规则创建集合
// const Login = mongoose.model('Login', loginSchema)
// //创建一条记录
// // const Login1 = new Login({
// //     username: 'lizibin',
// //     password: '123456'
// // })
// // Login1.save();

// // 创建学生信息规则
// const StudentSchema = new mongoose.Schema({
//     snumber: { type: String },
//     class: { type: String },
//     name: { type: String },
//     jinlan: { type: String },
//     yinglan: { type: String },
//     clan: { type: String },
//     shulan: { type: String }
// })
// // 使用登录规则创建集合
// const Student = mongoose.model('Student', StudentSchema)
// // 创建一条记录
// // const Student1 = new Student({
// //     snumber: '1801',
// //     class: '计算机信息管理GZ801',
// //     name: '李子彬',
// //     jinlan: '80',
// //     malan: '80',
// //     yinglan: '80',
// //     clan: '80',
// //     shulan: '80'
// // })
// // Student1.save();


// app.listen(3001,()=>{
//     console.log('success')
// })


const express = require('express')
const app = express()
const mongoose = require('mongoose')
app.use(require('cors')())
app.use(express.json())
// 登录验证
app.post('/api/login', async(req, res)=> {
    const {username, password} = req.body
    const login = await Login.findOne({username, password})
    if (login !== null){
        // 找到数据
        // const jwt  = require('jsonwebtokens');
        // let payload = {name:'lizibin',admin:true};
        // let secret = 'I_LOVE_JING';
        // let token = jwt.sign(payload,secret);
        // console.log(token)
        res.send(0)
    } else {
        // 没有找到数据
        res.send(1)
    }
})
//服务端端口首页：
app.get('/',async(req,res) =>{
    res.send('hello node')
})

//显示学生列表：
app.get('/api/getStudentList',async(req,res)=>{
    const students = await Student.find()
    res.send(students)
})
//录入学生：
app.post('/api/students',async(req,res)=>{
    const student = await Student.create(req.body)
    //返回给前端：
    res.send(student)
})
//删除学生：
app.delete('/api/students/:id',async(req,res)=>{
    await Student.findByIdAndDelete(req.params.id)
    //返回：
    res.send({
        status:true
    })
})
//回显学生详细信息用于修改：
app.get('/api/update/:id',async(req,res)=>{
    const student = await Student.findById(req.params.id)
    res.send(student)
})
//更新学生信息：
app.put('/api/confirmUpdate/:id',async(req,res)=>{
    const student = await Student.findByIdAndUpdate(req.params.id,req.body)
    res.send(student)
})
//根据学号精确查询：
app.get('/api/findBySnumber/:xuehao',async(req,res)=>{

    const students = await Student.find({'snumber':req.params.xuehao})
    res.send(students)
})
//根据姓名模糊查询：
app.get('/api/findByName/:names',async(req,res)=>{
    var query = new RegExp(req.params.names)
    const students = await Student.find({$or:[{"name": query}]})
    res.send(students)

})
//姓名模糊分页查询:
app.get('/api/findByName', (req,res)=>{

    result= {
        data:{},
        total:''
    };
    // var total;
    var confident = new RegExp(req.query.names)

    //总记录数：
    var query =  Student.find({$or:[{"name": confident}]});
    query.count({},function(err, count){
        if(err){
            res.json(err)
        }else{
            result.total = count;
            console.log("count的值是：",result.total);
        }
    });
    //第几页的数据：
    pageSize = parseInt(req.query.pageSize);
    currentPage = parseInt(req.query.currentPage);

    Student.find({},(error,data)=>{
            result.data = data;
            res.send(result);
    }).where({$or:[{"name": confident}]}).skip((currentPage-1)*pageSize).limit(pageSize);//对结果默认排序

})
//分页查询列表：
app.all('/api/studentList',(req,res,next)=>{

    result= {
        data:[],
        total:''
    };
    // var total;
    //总记录数：
    var query =  Student.find({});
    query.count({},function(err, count){
        if(err){
            res.json(err)
        }else{
            result.total = count;
            console.log("count的值是：",result);
        }
    });
    //第几页的数据：
    pageSize = parseInt(req.query.pageSize);
    currentPage = parseInt(req.query.currentPage);
    console.log("页码shishi：");
    console.log(pageSize+"   "+currentPage);
     Student.find({},(error,data)=>{
         result.data = data;
         res.send(result);
    }).skip((currentPage-1)*pageSize).limit(pageSize);//对结果默认排序

});


//数据库：
mongoose.connect('mongodb://localhost:27017/studentm',{
    useNewUrlParser:true,
    useFindAndModify:true,
    useCreateIndex:true,
})
const Student = mongoose.model('Student',new mongoose.Schema({
    snumber:{type:String},
    class:{type:String},
    name:{type:String},
    jinlan:{type:String},
    yinglan:{type:String},
    clan:{type:String},
    shulan:{type:String}
}))

// 创建登录规则
const loginSchema = new mongoose.Schema({
    username: String,
    password: String
})
// 使用登录规则创建集合
const Login = mongoose.model('Login', loginSchema)
//创建一条记录
// const Login1 = new Login({
//     username: 'lizibin',
//     password: '123456'
// })
// Login1.save();

app.listen(3001,()=>{
    console.log('http://localhost:3001/')
})
